]> dgit.raspbian.org Git - gnome-shell.git/commitdiff
system: Pick up Settings name and icon from app
authorFlorian Müllner <fmuellner@gnome.org>
Tue, 24 Jul 2018 14:40:03 +0000 (16:40 +0200)
committerFlorian Müllner <fmuellner@gnome.org>
Tue, 31 Jul 2018 14:52:47 +0000 (16:52 +0200)
The settings action button in the system menu simply launches
gnome-control-center, so we want its icon (and accessible name)
to always match the app. So instead of keeping the button in-sync
with Settings, just look up that information from the app itself.

https://gitlab.gnome.org/GNOME/gnome-shell/issues/433

js/ui/status/system.js

index 777e9595645fcbcf64e54dd230ea10a9a055cfb4..81b985c1f84c5b1a868cfb78a5dec7674781fe7f 100644 (file)
@@ -261,8 +261,19 @@ var Indicator = new Lang.Class({
         item = new PopupMenu.PopupBaseMenuItem({ reactive: false,
                                                  can_focus: false });
 
-        this._settingsAction = this._createActionButton('preferences-system', _("Settings"));
-        this._settingsAction.connect('clicked', () => { this._onSettingsClicked(); });
+        let app = this._settingsApp = Shell.AppSystem.get_default().lookup_app(
+            'gnome-control-center.desktop'
+        );
+        if (app) {
+            let [icon, name] = [app.app_info.get_icon().names[0],
+                                app.get_name()];
+            this._settingsAction = this._createActionButton(icon, name);
+            this._settingsAction.connect('clicked',
+                                         this._onSettingsClicked().bind(this));
+        } else {
+            log('Missing required core component Settings, expect trouble…');
+            this._settingsAction = new St.Widget();
+        }
         item.actor.add(this._settingsAction, { expand: true, x_fill: false });
 
         this._orientationLockAction = this._createActionButton('', _("Orientation Lock"));
@@ -330,8 +341,7 @@ var Indicator = new Lang.Class({
 
     _onSettingsClicked() {
         this.menu.itemActivated();
-        let app = Shell.AppSystem.get_default().lookup_app('gnome-control-center.desktop');
         Main.overview.hide();
-        app.activate();
+        this._settingsApp.activate();
     }
 });